package com.origin.niuke.linkedlist;

import general_class.ListNode;

/**
 * @author yzh
 * @version 1.0
 * @date 2022/4/26 23:43
 * 判断链表中是否有环
 * 判断给定的链表中是否有环。如果有环则返回true，否则返回false。
 * 算法：链表 + 快慢指针
 * 在一个环中，一个指针走一步，另一个指针走两步，无论如何都会相遇
 */
public class NC4 {

    public boolean hasCycle(ListNode head) {
        ListNode slow = head, fast = head;
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
            if (slow == fast) return true;
        }
        return true;
    }

}
